package com.example.endusation.service.impl;

import com.example.endusation.dao.LoginRegisterDAO;
import com.example.endusation.dto.UserInfoDTO;
import com.example.endusation.entity.UserInfoDO;
import com.example.endusation.service.LoginRegisterService;
import com.example.endusation.util.DateUtil;
import com.example.endusation.util.RandomUtil;
import com.example.endusation.util.WrapperResponse;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.io.IOException;


@Service
public class LoginRegisterServiceImpl implements LoginRegisterService {
    @Autowired
    private LoginRegisterDAO loginRegisterDAO;

    /**
     * 登录接口
     *
     * @param userInfoDTO
     * @return
     */
    @Override
    public WrapperResponse login(UserInfoDTO userInfoDTO) {
        if (userInfoDTO.getUsername() == null || userInfoDTO.getUsername().isEmpty()) {
            return WrapperResponse.fail("账号不可以为空", null);
        }
        if (userInfoDTO.getPassword() == null || userInfoDTO.getPassword().isEmpty()) {
            return WrapperResponse.fail("密码不可以为空", null);
        }
        UserInfoDO account = loginRegisterDAO.queryUserInfoByAccount(userInfoDTO.getUsername());
        if (account == null) {
            return WrapperResponse.fail("该账号不存在", null);
        }
        UserInfoDO userInfoDO = loginRegisterDAO.queryUserInfoByAccountAndPassword(userInfoDTO.getUsername(), userInfoDTO.getPassword());
        if (userInfoDO == null) {
            return WrapperResponse.fail("密码错误", null);
        }
        return WrapperResponse.success(userInfoDO);
    }

    /**
     * 注册接口
     *
     * @param userInfoDTO
     * @return
     */
    @Override
    public WrapperResponse register(UserInfoDTO userInfoDTO) {
        if (userInfoDTO.getUsername() == null || userInfoDTO.getUsername().isEmpty()) {
            return WrapperResponse.fail("账号不可以为空", null);
        }
        if (userInfoDTO.getPassword() == null || userInfoDTO.getPassword().isEmpty()) {
            return WrapperResponse.fail("密码不可以为空", null);
        }
        UserInfoDO userInfoDO = new UserInfoDO();
        userInfoDO.setName(userInfoDTO.getName());
        userInfoDO.setPassword(userInfoDTO.getPassword());
        userInfoDO.setRole(userInfoDTO.getRole());
        userInfoDO.setStudentId(userInfoDTO.getStudentId());
        userInfoDO.setUsername(userInfoDTO.getUsername());
        userInfoDO.setId(DateUtil.getEightLength()+String.valueOf(RandomUtil.getFour()));
        int insertResult = loginRegisterDAO.insertUserInfo(userInfoDO);
        if (insertResult == 0) {
            return WrapperResponse.fail("注册失败", null);
        }
        return WrapperResponse.success("注册成功", null);
    }

    @Override
    public WrapperResponse queryCode(UserInfoDTO userInfoDTO) throws IOException {
        return null;
    }

}
